<?php
/**
 * Created by PhpStorm.
 * User: 曹旺
 * Date: 2018-05-18
 * Time: 14:13
 */

namespace app\index\controller;
use phpmailer\phpmailer;
use app\index\model\SmsMessage;
use think\Cache;

class Xcxapi
{

    public function demo(){
        echo 123;
    }
    /**
     * @param string $email
     * @param string $ch_name
     * @param int $rand
     * @return int
     * 发送邮件
     * @author  曹旺
     * @data  14:19
     */
    public function SendEmail($email = '592322241@qq.com', $ch_name = '592322241@qq.com', $rand = 1234)
    {
        $mail = new PHPMailer();
        $mail->isSMTP();// 使用SMTP服务
        $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
        $mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址
        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "cw1993teemo@163.com";// 发送方的QQ邮箱用户名，就是自己的邮箱名
        $mail->Password = "asd18354682311";// 发送方的邮箱密码，不是登录密码,是qq的第三方授权登录码,要自己去开启,在邮箱的设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 里面
        $mail->SMTPSecure = "ssl";// 使用ssl协议方式,
        $mail->Port = 465;// QQ邮箱的ssl协议方式端口号是465/587

        $mail->setFrom("cw1993teemo@163.com", '挪宝新能源集团');// 设置发件人信息，如邮件格式说明中的发件人,
        $mail->addAddress($email, $ch_name);// 设置收件人信息，如邮件格式说明中的收件人
        $mail->addReplyTo("cw1993teemo@163.com", "Reply");// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
        //$mail->addCC("xxx@163.com");// 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
        //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
        //$mail->addAttachment("bug0.jpg");// 添加附件


        $mail->Subject = "账号绑定";// 邮件标题
        //$mail->Body = $rand;// 邮件正文
        $mail->Body = '你好：你的验证码为' . $rand . '，5分钟之内有效，若验证码错误，5分钟之后可重新获取';// 邮件正文
        $mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容，如果不支持Html方式，就会用到这个，基本无用
        //return 111;
        if (!$mail->send()) {// 发送邮件
            //return 0;
            //echo "Message could not be sent.";
            echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息
        } else {
            //return 1;
            echo '发送成功';
        }
    }

    /**
     * @param $phone
     * @return array
     * 发送手机验证码
     * @author  曹旺
     * @data  15:00
     */
    public function SendMessage($phone)
    {
        $date = date('Y-m-d');
        $type='绑定手机';
        $phone_rand_count = Cache::get($phone . $date . $type . 'count');
        if ($phone_rand_count >= 15) {
            $result_json = ['code' => 199, 'msg' => '每天最多发送5条', 'content' => ''];
            return $result_json;
        }
        $phone_pass = $this->phone_pass($phone);
        if (!$phone_pass) {
            $result_json = ['code' => 199, 'msg' => '手机格式错误', 'content' => ''];
            return $result_json;
        }
        //return 123;
        $send = new SmsMessage();
        $rand = $this->send_phoneRand();
        $arr = $send::sendSms($phone, $rand);
        //return json_encode($arr);
        $arr_array = json_decode(json_encode($arr), true);
        //return json_encode($arr_array);
        if ($arr_array['Code'] == 'OK') {
            $phone_rand_count += 1;
            Cache::set($phone . $date . $type . 'count', $phone_rand_count, strtotime('+1 day'));
            Cache::set($phone . $type . "rand", $rand, 300);
            $result_json = ['code' => 200, 'msg' => '发送成功', 'content' => '发送成功'];
            //dump($result_json);die;
            return $result_json;
        } else {
            $result_json = ['code' => 199, 'msg' => $arr_array['Code'], 'content' => '发送受限'];
            //dump($result_json);die;
            return $result_json;
        }
    }

    /**
     * @param int $len
     * @return array
     * 生成手机验证码
     * @author  曹旺
     * @data  11:17
     */
    public function send_phoneRand($len = 6)
    {
        $min = pow(10, $len - 1);
        $max = pow(10, $len) - 1;
        $rand= rand($min, $max);
        return array('code'=>$rand,"product"=>"dsd");
    }

    /**
     * @param $phonenumber ：要验证的手机号
     * @return int
     * 验证手机号
     * @author  曹旺
     * @data  14:36
     */
    public function phone_pass($phonenumber)
    {
        if (preg_match("/^1[34578]{1}\d{9}$/", $phonenumber)) {
            return 1;
        } else {
            return 0;
        }
    }
}